#include <iostream>
#include <string>

/**
 * @brief 编写一个函数，交换两个 int 指针
 * 1. 交换指针本身的值，即指针所指的内存地址
 * 2. 交换指针所指的内容
 * 
 */

/**
 * @brief 该函数既不交换指针，也不交换指针所指的内容
 * 
 * @param p 
 * @param q 
 */
void swapPointer1(int *p, int *q)
{
    int *temp = p;
    p = q;
    q = temp;
}

/**
 * @brief 该函数交换直至恩所指的内容
 * 
 * @param p 
 * @param q 
 */
void swapPointer2(int *p, int *q)
{
    int temp = *p;
    *p = *q;
    *q = temp;
}

/**
 * @brief 该函数交换指针本身的值，即交换指针所指的内存地址
 * 
 * @param p 
 * @param q 
 */
void swapPointer3(int *&p, int *&q)
{
    int *temp = p;
    p = q;
    q = temp;
}